1215787625 发表于 2024-12-5 20:28:02

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

#include<bits/stdc++.h>
using namespace std;
int main(){
        vector<string> s,b,c;
        char a,d;//,c;
        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);
        //cout<<s;
        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;
                if(max<num){
                        max = num;
                }
        }
        for(i=1;i<=max;i++){
                for(j=0;j<n;j++){
                        for(k=0;k<l;k++){
                                if(a==c){
                                        a=c;
                                }
                        }
                }
                s.push_back(a);
        }
        for(i=0;i<m;i++){
                cout<<s]<<endl;
        }
        /*for(i=0;i<m;i++){//表示有多少个
                cin>>k;
                //s = a;
                cout<<"s="<<s<<endl;
                a = s;
                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==c){
                                                a=c;
                                        }
                                }
                        }
                        //s.push_back()
                }
                s.push_back(a);
                cout<<a<<endl;
        }
        */
        return 0;
}

FishC 发表于 2024-12-5 20:28:12

在你的代码中,`cin.getline(d,10);` 和 `c.push_back();` 没有成功赋值的原因可能有以下几点:

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

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, d;
    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); // 假设你想将第一个字符添加到向量中
    cin.getline(d, 10);
    c.push_back(d); // 假设你想将第一个字符添加到向量中

    // 其他代码逻辑
}

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 为什么在i=0时cin.getline(d,10);c.push_back();没有成功赋值