存储数组的字符串

时间:2013-04-03 12:52:39

标签: c++ arrays string arraylist

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循环更合适,因为不知道需要多少时间插入单词。请帮忙。感谢。

5 个答案:

答案 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 ...
}