繁体   English   中英

C++中数据不一致时,将文本文件中的数据读入二维数组

[英]Reading data from a text file into a 2D array when data is inconsistent in C++

有人告诉我使用一个二维数组来读取下面文件的所有内容并将其存储在一个二维数组中。 这是文件:

People often say that motivation doesn  t last   Well   neither does bathing that s why we recommend it daily   Ziglar
Someday is not a day of the week      Denise Brennan  Nelson
Hire character   Train skill      Peter Schutz
Your time is limited   so don t waste it living someone else s life      Steve Jobs
Sales are contingent upon the attitude of the salesman      not the attitude of the prospect      W   Clement Stone
Everyone lives by selling something      Robert Louis Stevenson
If you are not taking care of your customer   your competitor will      Bob Hooey
The golden rule for every businessman is this: Put yourself in your customer s place      Orison Swett Marden
If you cannot do great things do small things in a great way    Napoleon Hill

*以上是包含数据的文本文件

该文件有很多随机空格,但我可以使用cin忽略它们。 我感到困惑的部分是每一行都有不同数量的列要处理,所以我不能简单地使用嵌套的 for 循环。

最后我希望能够cout << data[0][1]; 它应该“经常”打印出来。 行本质上是单词的行号。

您可以使用 getline 然后使用 stringstream 来读取单词。

#include <fstream>
#include <sstream>
#include <string>

using namespace std;

int main() {
    ifstream input;
    string line;
    string word;
    string data[3][10]; //You need to dynamically allocate memory if you don't know the size of your input. I am doing this to keep it short

    input.open("input.txt");

    int i = 0;
    while(getline(input, line)) { //Reading file line by line until the end of file
        stringstream ss(line);
        int j = 0;
        while(ss) {
            ss >> word; //word will become the next string in your line (People, often, say...)
            data[i][j] = word;
            j++;
        }
        i++;
    }

    return 0;
}

你会得到

cout << data[0][0] -> "People"
cout << data[0][1] -> "often"
.
.
etc.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM