鱼C论坛

 找回密码
 立即注册
查看: 70|回复: 1

为什么在i=0时cin.getline(d,10);c.push_back();没有成功赋值

[复制链接]
发表于 2024-12-5 20:28:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<bits/stdc++.h>
using namespace std;
int main(){
        vector<string> s,b,c;
        char a[105],d[6];//,c[100][6];
        int i=0,m=0,n=0,j=0,l=0,num[10]={0},max=INT_MIN,k=0;
        cin.getline(a,105);
        cin>>n;
        s.push_back(a);
        //cout<<s[0];
        l = strlen(a);
        //cin.getline(d,10);
        //c.push_back(d);
        for(i=0;i<n;i++){
                cin.getline(d,10);
                c.push_back(d);
                //cout<<"c="<<c<<endl;
                //cout<<"i="<<i<<endl;
               
                //s.push_back(a);
                //cout<<"i="<<i<<" "<<a<<endl;
                cout<<"i="<<i<<" "<<d<<endl;
        }
        cin>>m;
        cout<<"m="<<m<<endl;
//cin>>m;
        for(i=0;i<m;i++){
                cin>>num[i];
                if(max<num[i]){
                        max = num[i];
                }
        }
        for(i=1;i<=max;i++){
                for(j=0;j<n;j++){
                        for(k=0;k<l;k++){
                                if(a[k]==c[j][1]){
                                        a[k]=c[j][2];
                                }
                        }
                }
                s.push_back(a);
        }
        for(i=0;i<m;i++){
                cout<<s[num[i]]<<endl;
        }
        /*for(i=0;i<m;i++){//表示有多少个
                cin>>k;
                //s[0] = a;
                cout<<"s[0]="<<s[0]<<endl;
                a = s[0];
                for(j=0;j<k;j++){//表示要多少次的循环
                //        cout<<"j="<<j<<endl;
                        for(x=0;x<n;x++){//进行c的循环
                                for(y=0;y<l;y++){//表示对一个字符串内部的操作
                                        if(a[y]==c[x][1]){
                                                a[y]=c[x][2];
                                        }
                                }
                        }
                        //s.push_back()
                }
                s.push_back(a);
                cout<<a<<endl;
        }
        */
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-12-5 20:28:12 | 显示全部楼层
在你的代码中,`cin.getline(d,10);` 和 `c.push_back();` 没有成功赋值的原因可能有以下几点:

1. **字符数组未初始化**:`char a, d;` 只声明了单个字符变量,而 `cin.getline()` 需要一个字符数组来存储输入的字符串。你需要将 `d` 声明为字符数组,例如 `char d[10];`。

2. **`push_back()` 用法错误**:`c.push_back();` 缺少参数。`push_back()` 是用于向 `vector` 中添加元素的方法,你需要在括号中指定要添加的元素。

3. **`vector` 类型未指定**:`vector s, b, c;` 中的 `vector` 没有指定类型。你需要指定 `vector` 的类型,例如 `vector<char> s, b, c;`。

以下是修正后的代码片段:
#include <iostream>
#include <vector>
#include <climits>
using namespace std;

int main() {
    vector<char> s, b, c;
    char a[105], d[10];
    int i = 0, m = 0, n = 0, j = 0, l = 0, num = 0, max = INT_MIN, k = 0;
    
    cin.getline(a, 105);
    cin >> n;
    
    s.push_back(a[0]); // 假设你想将第一个字符添加到向量中
    cin.getline(d, 10);
    c.push_back(d[0]); // 假设你想将第一个字符添加到向量中

    // 其他代码逻辑
}

请根据你的具体需求调整代码。确保在使用 `getline` 时,目标变量是一个字符数组,并且在使用 `push_back` 时,提供正确的参数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 17:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表