cin >> *integerVar >> *charVar;
可以正確讀取「25 b」等輸入。用現有的字符串做這件事最簡單的方法是什麼(我可以通過拆分然後解析每個部分手動完成,但是更好的方法是什麼)?如何解析一個字符串在C++中的多種類型?
回答
使用的istringstream
等,例如:
#include <string>
#include <sstream>
int main(void)
{
std::istringstream ss("25 b");
int x; std::string bstr;
ss >> x >> bstr;
return 0;
}
// note that std:istringstream allows ss >> x, but not ss << "some value".
// if you want to support both reading and writing, use a stringstream (which would then support ss >> x as well as ss << "some value")
我們不應該使用'istringstream'作爲更專業的類嗎? – HolyBlackCat
@HolyBlackCat:我認爲'istringstream'能更好地表達意圖,如果你只想讀,但'stringstream'也可以。 –
@HolyBlackCat:是的,那會更好;糾正了答案;感謝您的評論。 –
可以利用stringstream和string(模板)類:
#include <iostream>
#include <string>
#include <sstream>
int main() {
std::string s;
std::getline(std::cin, s);
std::stringstream ss(s);
int n;
char c;
ss >> n >> c;
return 0;
}
通過使用std::stringstream
:
std::stringstream myStr{"25 b"};
myStr >> *integerVar >> *charVar;
你可以用哪個做sscanf ES完全相同的東西scanf函數,但使用字符串而不是STD輸入
#include<iostream>
#include<stdlib>
#include<stdio>
int main(){
std::string str;
char character;
int intnumber;
cin >> str;
sscanf (str.c_str(), "%d%c", &intnumber, &character);
}
更好舉一個例子,因爲這需要一個'字符串'的工作和'scanf'的一些按摩和朋友是臭名昭着的時候提供錯誤的數據類型。 – user4581301
@ user4581301這樣的事情好嗎? – ZioCain
非常接近。推薦使用'std :: string'替代'char *'替換'str','char'替代'char *'替換'character',並且'sscanf(str.c_str(),「%d%c 「,&intnumber,&character);'在通話中。因爲否則,你正在使用一些未初始化的指針(以及在調用中的額外級別的尋址)。 – user4581301
- 1. 解析一個字符串到一個泛型枚舉類型
- 2. 解析來自一個字符串類型名複用C#
- 3. 如何解析C#中多個節點的XML字符串?
- 4. 解析C字符串和多個指針C字符串
- 5. 從字符串c解析多個值#
- 6. 如何解析這個Xml類型的字符串
- 7. C解析一個字符串劃分
- 8. C#在一個字符串類型
- 9. 解析JSON類型的字符串
- 10. 解析不同類型的字符串
- 11. 將一個字符串解析爲多個字符串
- 12. 如何解析Scala中一個解析器中的兩種不同類型?
- 13. 字符串解析在C#
- 14. 如何解析一個字符串[]到一個int []在Java中?
- 15. 字符串解析多個字符
- 16. 如何解析具有多種可能性的字符串?
- 17. 解析多行的字符串(C#)
- 18. 在Ruby中解析一個字符串的多個值?
- 19. 將字符串解析爲Haskell中的另一種數據類型
- 20. 解析一個字符串
- 21. C#替換某種類型的字符的字符串中的
- 22. 如何分析這種類型的JSON字符串數據
- 23. 如何在java中解析多個字符串到int中
- 24. 如何在從SQL Server 2012中的CSV導入時將字符串字段解析爲另一種類型?
- 25. 字符串無法解析爲某種類型 - Java RAD
- 26. 如何從字符串創建一個類型並在運行時解析
- 27. 字符串檢查多種類型
- 28. 如何使用javascript或jquery解析這種類型的字符串?
- 29. 解析字符串枚舉類型
- 30. 解析Java字符串類型錯誤
'性病:: stringstream的解析器(「我的源字符串」);'現在你可以使用'parser'正是你使用'同樣的方式cin'。文檔:http://en.cppreference.com/w/cpp/io/basic_stringstream – user4581301
你爲什麼使用指針? C++語言不是C#或Java;你不需要爲每個變量或實例使用'new'運算符。 –