if(command=="insert")
{
int i=0;
while(i>=0)
{
string textToSave[i];
cout << "Enter the string you want saved: " << endl;
cin >>textToSave[i];
ofstream saveFile ("Save.txt");
saveFile << textToSave;
saveFile.close();
i++;
break;
}
}
我想将输入的数组存储到.txt文件中。但我有问题创建存储的数组。我也选择介于while循环和forloop之间的困境,但认为while循环更合适,因为不知道需要多少时间插入单词。请帮忙。感谢。
答案 0 :(得分:1)
您正在尝试存储整个字符串数组,而不仅仅是当前字符串。不知道为什么你需要i
并且根本就有一个数组,因为你一直只是一次读写一个字符串。
可能是这样的:
if(command=="insert")
{
string textToSave;
cout << "Enter the string you want saved: " << endl;
cin >>textToSave;
ofstream saveFile ("Save.txt");
saveFile << textToSave;
saveFile.close();
break;
}
答案 1 :(得分:0)
我认为你需要类似下面的代码:
vector<string> textToSave(MAX);
// ...
ofstream saveFile ("Save.txt");
for(int i=0; i<textToSave.size(); i++)
{
cout << "Enter the string you want saved: " << endl;
cin >> textToSave[i];
saveFile << textToSave[i] << endl;
}
saveFile.close();
答案 2 :(得分:0)
您遇到的一些最明显的问题是:
textToSave
时,您使用名为variable-length array的C99功能。这不是合法的C ++。break
,那么您将永远循环使用该条件。答案 3 :(得分:0)
在循环之前创建数组,否则你不断创建大小增加1的数组。如果你想将每个数据保存在新文件中,也可以更改文件名,否则你会不断覆盖同一个文件。
string textToSave[string_count];
if(command=="insert")
{
int i=0;
while(i<string_count)
{
cout << "Enter the string you want saved: " << endl;
cin >>textToSave[i];
ofstream saveFile ("Save"+i+".txt");
saveFile << textToSave[i];
saveFile.close();
i++;
}
}
答案 4 :(得分:0)
但我有问题要创建要存储的数组。
在循环外,声明一个空向量;这将保存数组:
vector<string> textToSave;
在循环内部,读取一个字符串并将其附加到数组中:
string text;
cin >> text;
textToSave.push_back(text);
或者更紧凑:
textToSave.push_back(string());
cin >> textToSave.back();
在whileloop和forloop之间选择我也很困难
看起来你根本不想要一个循环,因为你只是在读一个字符串。你可能想要一个外部循环来读取命令,沿着
行vector<string> textToSave;
for (;;) { // loop forever (until you reach "break")
string command;
cin >> command;
if (command == "quit") { // or whatever
break;
}
if (command == "insert") {
cout << "Enter the string you want saved: " << endl;
textToSave.push_back(string());
cin >> textToSave.back();
}
// other commands ...
}