我開始寫C++,我試圖讀取的格式像這樣的文本文件:C++相當於一個掃描儀的.nextFloat()方法?
32.0 12.43
503.2 3.212
等
在Java中,我可以用一個Scanner
與.nextFloat()
,並將包含到Array
。我試圖用C++實現同樣的事情。這是如何完成的?
我開始寫C++,我試圖讀取的格式像這樣的文本文件:C++相當於一個掃描儀的.nextFloat()方法?
32.0 12.43
503.2 3.212
等
在Java中,我可以用一個Scanner
與.nextFloat()
,並將包含到Array
。我試圖用C++實現同樣的事情。這是如何完成的?
從標準輸入
#include <iostream>
int main()
{
float f1, f2, f3, f4;
std::cin >> f1 >> f2 >> f3 >> f4;
}
讀從文件
#include <fstream>
int main()
{
std::ifstream fin("file.txt"); //fin is an arbitrary identifier
float f1, f2, f3, f4;
fin >> f1;
fin >> f2;
fin >> f3;
fin >> f4; // or fin >> f1 >> f2 >> f3 >> f4; no difference
}
讀取要讀取所有漂浮在float陣列(向量)時,可以使用這樣的:
#include <fstream>
#include <vector>
#include <iterator> //for istream_iterator and back_inserter
#include <algorithm> //for copy
int main()
{
std::ifstream fin("input.txt");
std::vector<float> v; //could also initialize with the two-iterator constructor
std::copy(std::istream_iterator<float>(fin),
std::istream_iterator<float>(),
std::back_inserter(v)); //push_back into vector
}
瞭解更多關於流輸入/輸出here和其他地方。 我還強烈建議您閱讀a good C++ book
Armen,這是從控制檯還是文件讀取?我試圖從文件中讀取。 – Derek 2012-02-02 21:12:34
@Derek:更新 – 2012-02-02 21:14:13
@Derek:更新了一個數組示例 – 2012-02-02 21:20:34
您可以使用string :: find()或使用strtok()或使用Boost Tokenizer來構建一個String Tokenizer。我不知道預先存在的Scanner等價物。
也期待在這個線程:Converting from Java to C++ Reading a File, and parsing
C++有很多很好的天然選擇讀取數據,例如給std :: cin對用戶輸入數據和std :: ifstream的的文件。 但是,如果你正在尋找一個非常相似的Java實現掃描儀,你可以在一個名爲掃描++開源項目找到它:Java的掃描儀類的http://sourceforge.net/projects/scannerpp/
許多很好的功能實現還有,包括nextFloat()方法。
#include "Scanner.h"
using namespace scannerpp;
int main()
{
// to work with strings
Scanner scanner("32.0 12.43 \n 503.2 3.212");
float x = scanner.nextFloat();
// to work with files
Scanner scanner(new File("test-data.txt"));
float x2 = scanner.nextFloat();
}
希望這有助於!
歡迎來到C++,隨時準備好搞定xD(不介意) – 2012-02-02 21:12:19
到目前爲止您嘗試了什麼? – 2012-02-02 21:16:14
@ Anony-Mousse爲什麼這麼說?他正在C++中尋求一些等價物。你是否想問他迄今爲止的研究? – 2012-02-02 21:23:39