簡體   English   中英

從文件中讀取單詞列表,逐個字符並將其存儲在數組中

[英]Reading a list of words, char by char from a file and storing them in an array

我正在從一個文件中讀取,該文件包含以下內容:

“連接中”,“類”,“提要”。

我需要將每個字符轉換為小寫,然后調用一個函數來刪除每個單詞的后綴。 說,首先是連接,然后是課堂...

我已經完成了剩下的部分,但是在讀取文件並將單詞存儲在數組中時遇到了問題。

我在文件中至少要包含50個這樣的單詞。 最好的存儲方式是什么?

{
    int val=0; char fin_char;    
    string line;string arr[100];    
    ifstream myfile("testfile.txt"); 
    if (myfile.is_open())
    {
        while(myfile.good())
        {
            getline(myfile,line); 
            arr[i]=line; 
            i++;
        }   
        myfile.close(); 
        for (int j=0;j<i;j++)
        {
            while (arr[j][k]!='\0')
            {
                c=arr[j][k];
                cout<<"C"<<c<<" "<<"J:"<<" "<<j<<"K:"<<k<<"\n";
                val=int(c);
                if (val>=65&&val<=90){ val=val+32;fin_char=static_cast<char>(val);arr[j][k]=fin_char;}
                k++;
            }
        }   
        for (int j=0;j<i-1;j++)
        {
            cout<<" "<<arr[j]<<"\n";
        }   
        system("pause");
        return 0;
    }

這是我得到的輸出:

 C99 J:0 K:0 C111 J:0 K:1 C110 J:0 K:2 C110 J:0 K:3

如果您想要一個隨機訪問的容器(如數組)而不聲明其大小,請使用STL中的vector。

您如何將單詞存儲在文本文件中? 因為除非每個單詞都換行,否則您的arr數組將只有一個元素且字符串很長。

同樣如Bartosz-Marcinkowski建議的那樣,使用向量。 您仍然可以訪問每個字符,只需將其用作2D數組即可。

如果您需要文本文件中一行中的所有單詞,那么我建議根據空格將行分開,如果您願意,可以使用此功能:

#include "sstream"
#include "vector"
#include "string"

vector<string> split(const string str)
{
 stringstream ss(str);
 string buf;
 vector<string> elems;

 while(ss >> buf)
     elems.push_back(buf);

 return elems;
}

返回一行中所有單詞的向量。 因此,您可以像這樣使用它:

int main()
{ 
 string line,
 vector<string> arr;
 ifstream myfile("testfile.txt");

 if(myfile.is_open())
     getline(myfile,line);


 arr = split(line);
}

現在,如果您想訪問第5個字中的第3個字符, arr[4][2]需要arr[4][2]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM