對於情況下,你可能會提供一個鏈接到your previous question,有關存儲字的兩個列表以不同的語言。在那裏,我提供的讀取文本文件的內容到一個數組的例子:
const int MaxWords = 100;
std::string piglatin[MaxWords];
int numWords = 0;
std::ifstream input("piglatin.txt");
std::string line;
while (std::getline(input, line) && numWords < MaxWords) {
piglatin[numWords] = line;
++numWords;
}
if (numWords == MaxWords) {
std::cerr << "Too many words" << std::endl;
}
不能有一個平行排列。爲了平行,至少有兩個。對於單詞的平行排列,你可以使用一個聲明如下:
std::string piglatin[MaxWords];
std::string english[MaxWords];
然後,你必須從文件填充陣列兩種選擇:
閱讀整條生產線,而分裂線分成兩個詞基於其中所述第一空間是:
while (std::getline(input, line) && numWords < MaxWords) {
std::string::size_type space = line.find(' ');
if (space == std::string::npos)
std::cerr << "Only one word" << std::endl;
piglatin[numWords] = line.substr(0, space);
english[numWords] = line.substr(space + 1);
++numWords;
}
在時間讀取一個字,並假設該 EAC h線上有兩個字。操作員將自動地一次讀取一個單詞。 (如果每一行都沒有兩個字,那麼你會遇到問題,試試看看事情是怎麼出現的。真的。獲得經驗的一個錯誤,當你知道什麼原因會幫助你在未來,當你不知道原因是什麼。)
while (input && numWords < MaxWords) {
input >> piglatin[numWords];
input >> english[numWords];
++numWords;
}
現在,如果你真的一個一個數組與兩個元素,那麼你需要定義另一個數據結構,因爲一個數組在每個元素中只能有一個「事物」。定義的東西,可以一次容納兩個字符串:
struct word_pair {
std::string piglatin;
std::string english;
};
然後你就只有一個數組:
word_pair words[MaxWords];
您可以填寫像這樣:
while (std::getline(input, line) && numWords < MaxWords) {
std::string::size_type space = line.find(' ');
if (space == std::string::npos)
std::cerr << "Only one word" << std::endl;
words[numWords].piglatin = line.substr(0, space);
words[numWords].english = line.substr(space + 1);
++numWords;
}
注意如何代碼索引到words
數組中以查找下一個word_pair
對象,然後它使用.
運算符轉到piglatin
或english
必填。
聽起來像功課,對吧? – mjv 2009-11-03 02:20:46
這不是作業我只是想自己學習C++。 我想出瞭如何將完整的單詞放入數組中,但我不知道如何將它放入並行數組中。我想將「你好再見」放在數組的元素0中。然而,它將「hello」存儲爲元素0,將「goodbye」存儲爲元素1. 感謝您的幫助。 – 2009-11-03 02:24:42
「平行陣列」是什麼意思? – mch 2009-11-03 02:25:52