0
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 文件中。但是我在创建要存储的数组时遇到问题。在whileloop和forloop之间选择我也很纠结,但认为while循环更合适,因为不知道插入单词需要多少时间。请帮忙。谢谢。

4

4 回答 4

1

您正在尝试存储整个字符串数组,而不仅仅是当前字符串。不知道为什么你需要iand 有一个数组,因为无论如何你一次只是读取和写入一个字符串。

它可能是这样的:

if(command=="insert")
{
    string textToSave;

    cout << "Enter the string you want saved: " << endl;
    cin >>textToSave;

    ofstream saveFile ("Save.txt");
    saveFile << textToSave;
    saveFile.close();

    break;
}
于 2013-04-03T12:57:49.257 回答
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 ...
}
于 2013-04-03T13:05:03.590 回答
0

您遇到的一些最明显的问题是:

  • 在声明. _ textToSave这不是合法的 C++。
  • 如果可变长度数组声明有效,则在获取用户输入时,您将写入最后一个索引之外的一个
  • 您在每次迭代中打开并覆盖该文件。
  • 当你跳出循环时,你只循环一次,所以无论如何只保存一个字符串。
  • 如果您没有break在循环结束时使用,那么您将在该条件下永远循环。
于 2013-04-03T12:57:04.153 回答
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++;
        }
}
于 2013-04-03T12:58:06.917 回答