C ++通过命令行应用程序将要列表的字符串添加到txt文件

C++ Adding strings to list to a txt file by command line app

好的伙计们,很抱歉提出这些愚蠢的问题,但是我开始使用 C++ 编程

A 必须保存 "list of strings " 到 txt 文件。

我知道如何打开文件

我做了类似的东西并且它起作用了。

void open_file()
{
    string list_cont;
    fstream newlist;
    newlist.open("lista.txt", ios::in);
    while (newlist.good())
    {
        getline(newlist, list_cont);
        cout << list_cont << endl;
    }
    newlist.close();
}

除此之外,练习我的编程我做了类似的东西

struct list{
        przedmiot *first;
        void add_przedmiot(string name, string quantity);
        void delete_przedmiot(int nr);
        void show_list();
        list();
    };
    list::list(){
        first = 0;
    };

    void list::show_list()
    {
        przedmiot *temp = first;
            while (temp)
            {
                cout << "przedmiot: " << temp->name<<endl<< "ilosc: " << temp->quantity <<endl;
            temp = temp->next;
            }

    }




    void list::add_przedmiot(string name, string quantity)
            {
                przedmiot *nowy = new przedmiot;
                nowy->name = name;
                nowy->quantity = quantity;
                if (first == 0)
                {
                    first = nowy;
                }
                else{
                    przedmiot *temp = first;

                    while (temp->next)
                    {
                        temp = temp->next;
                    }
                    temp->next = nowy;
                    nowy->next = 0;
                };

            };

但问题是,我不知道如何"merge"把它变成一个可以工作的

大家有帮助吗?

假设用户将每一行写为“name quantity”,那么下面的代码应该可以完成工作:

#include <fstream>
#include <sstream>
#include <iostream>

int main(){
    using namespace std;
    string input, name, quantity;
    list myList;
    ofstream file;
    file.open("lista.txt");
    while( getline (cin, input) ) { //reading one line from standard input
        istringstream ss(input); // converting to convenient format
        getline(ss, name, ' '); //extract first field (until space)
        getline(ss, quantity); // extract second field (until end of line)
        myList.add_przedmiot( name,  quantity);
        file << name << quantity << endl; // write to file
    }
    file.close()
}

注意我使用了 istringstream class,它将字符串转换为流并且更易于解析。 此外,getline() 的默认分隔符是 \n,因此该函数在循环内的第二次出现采用第二个字段。

您还应该检查输入的有效性。此外,如果字段里面有一些空格,你应该定义一个合适的分隔符(逗号,分号),并在第getline().

处更改