我正在创建一个小程序来测试向量类。
我正在使用字符串向量,然后读取一个文本文件,然后尝试在向量中写入每个单词(每个空格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;
}
答案 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
偶然是向量变量恕我直言的糟糕选择。