![](/img/trans.png)
[英]C++: Read in complex numbers from a .txt file and store into an array of Complex numbers
[英]c++ open .txt file and read numbers to place in an array
我有一個文本文件,其中一行上的數字像(逗號之間沒有空格):
-1,5,-3,10,500000,-6000
到目前為止,這是我所擁有的代碼,但是我在向量數組中什么都沒有得到
fstream fp;
vector<int> numbers;
int number;
fp.open("numbers.txt", ios::in | ios::binary);
if(fp.is_open()){
while(fp >> number){
numbers.push_back(number);
}
}
fp.close();
cout << "Numbers:\n";
for (int i=0; i < numbers.size(); i++) {
cout << numbers[i] << '\n';
}
我覺得我只是不正確地讀取文件,或者整行只是放入數字var中。 另外,文件中的數字數量未知,所以我想避免對其進行硬編碼
fstream fp;
vector<int> numbers;
int number;
fp.open("numbers.txt", ios::in | ios::binary);
if(fp.is_open()){
while(fp >> number){
numbers.push_back(number);
fp.get();
}
}
fp.close();
cout << "Numbers:\n";
for (int i=0; i < numbers.size(); i++) {
cout << numbers[i] << '\n';
}
您只是忘記了逗號! 使用fp.get(); 擺脫它們,然后它將正常工作:D
首先,您的輸入文件不是二進制文件-不要使用ios::binary
。
其次,您需要拆分輸入令牌。 每次遇到逗號時,輸入操作都會失敗。 您可能需要輸入字符或字符串來處理這些字符或字符串。
當您嘗試將,
插入整數時,您的輸入將失敗。 您應該使用getline
插入值直到逗號分隔符:
while (std::getline(fp, number, ','))
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
像這樣
if(fp.is_open()){
while(fp >> number){
numbers.push_back(number);
char dummy_variable_for_the_comma;
fp >> dummy_variable_for_the_comma; // read and discard a comma
}
}
您必須告訴計算機跳過逗號,它不會幫您這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.