向量字符串推回问题,你们能帮我吗?

时间:2019-08-29 15:59:32

标签: c++ string vector

我正在创建一个小程序来测试向量类。
我正在使用字符串向量,然后读取一个文本文件,然后尝试在向量中写入每个单词(每个空格1个单词)。
当我尝试使用push_back将字符串放入向量中时,出现错误消息“没有将字符串转换为char的函数”。

如果我在英语方面犯了错误,对不起。
感谢您的帮助。

我阅读了一些指南,解释了push_back的工作方式,但是在本教程的所有教程中都使用了此声明。

vector<string> v_of_string;<br/>
//allocate some memeory<br/>
v_of_string[1].pushback(string to punt in the vector);<br/>

我的代码

int main() {
    vector<string> str; 
    //allocate some memory 
    ifstream iFile("test.txt"); 
    int i = 0;
    if (iFile.is_open()) {       
        while (!iFile.eof()) {
            string temp;
            iFile >> temp;
            str[i].push_back(temp);
            cout << str[i];
            i++;
        }

        iFile.close();
    }
return 0;
}

1 个答案:

答案 0 :(得分:4)

所以

str[i].push_back(temp);

是个错误,你的意思是

str.push_back(temp);

您将push_back视为整个向量,而不是向量的一个特定元素,因此不需要[i]。我希望如果您返回指南,它也会说同样的话。

您也可以将cout << str[i];替换为cout << str.back();,以始终输出向量的最后一个元素。因此,实际上您根本不需要变量i

while (!iFile.eof()) {
    string temp;
    iFile >> temp;

不正确,应该是

string temp;
while (iFile >> temp) {

有关说明,请参见here。如果您也从指南中获得了此代码,我将很感兴趣。在C ++中的while循环中使用eof必须是我们在堆栈溢出时看到的最常见错误。

str偶然是向量变量恕我直言的糟糕选择。