我很難想到從getline()函數提取的字符串中提取數字(如int或double)的方法。從字符串中提取數字(如整數或雙精度)
//例:
string data = "";
fstream inFile;
//文件包含:
"Hello today is 83.3 degrees Fahrenheit."
//使用getline函數從字符串數據
getline(inFile, data);
//提取數
謝謝
我很難想到從getline()函數提取的字符串中提取數字(如int或double)的方法。從字符串中提取數字(如整數或雙精度)
//例:
string data = "";
fstream inFile;
//文件包含:
"Hello today is 83.3 degrees Fahrenheit."
//使用getline函數從字符串數據
getline(inFile, data);
//提取數
謝謝
你可以做以下
getline(inFile, data);
std::istringstream iss;
iss.exceptions(std::istream::failbit | std::istream::badbit);
iss.str(data);
double dTemp = 0;
while(iss.good()){
try{
iss >> dTemp;
}
catch(std::istream::failure &e){
/* Do your error check over here */
}
}
你讓還想了解更多關於C++。檢查這link
希望這可以幫助。
這將完全失敗,因爲OP字符串中的第一個字符不是數字,而是一些隨機單詞。 – us2012 2013-03-10 23:44:00
謝謝,我同意你的意見。我們還需要檢查failbit和badbit。 – 2013-03-10 23:47:37
如果準備包含cstdio,則可以使用sscanf。
以下手冊頁鏈接將幫助您: -
http://linux.die.net/man/3/sscanf
例
char foo[] = "foo bar 12 baz";
int qux;
sscanf(foo, "foo bar %d baz", &qux);
// qux will be assigned 12
或
char foo[] = "foo bar 12.5 baz";
double qux;
sscanf(foo, "foo bar %lf baz", &qux);
// qux will be assigned 12.5
你顯然需要裁縫給你的情景和考慮各種安全問題。
我從哪裏開始?我在哪裏可以找到關於此的教程? – user2125471 2013-03-10 23:31:20
你有權訪問C++ 11或boost(兩者都包含正則表達式)嗎? – 2013-03-10 23:32:12
我無法使用這些類型的庫。 – user2125471 2013-03-10 23:33:47