stringstream
是 C++ 標準庫中的一個非常有用的類,它位于 <sstream>
頭文件中。stringstream
可以用于多種操作,包括類型轉換、字符串拼接、分割等。以下是一些使用 stringstream
的技巧:
類型轉換:
stringstream
可以輕松地在不同類型之間進行轉換。例如,可以將整數轉換為字符串,或者將字符串轉換為整數。#include <iostream>
#include <sstream>
#include <string>
int main() {
int num = 123;
std::stringstream ss;
ss << num;
std::string strNum;
ss >> strNum;
std::cout << "String representation of number: " << strNum << std::endl;
return 0;
}
字符串拼接:
<<
操作符可以將多個字符串或值拼接到一個 stringstream
對象中,然后使用 str()
方法獲取最終拼接的字符串。#include <iostream>
#include <sstream>
#include <string>
int main() {
std::stringstream ss;
ss << "Hello, " << "World!" << " Today is " << 2023 << "th day of the year.";
std::string str = ss.str();
std::cout << str << std::endl;
return 0;
}
字符串分割:
stringstream
本身沒有直接提供字符串分割的方法,但可以通過 >>
操作符結合使用來實現簡單的分割。對于更復雜的分割需求,可能需要使用正則表達式或其他字符串處理庫。#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string str = "apple,banana,orange";
std::stringstream ss(str);
std::string item;
while (getline(ss, item, ',')) {
std::cout << item << std::endl;
}
return 0;
}
格式化輸出:
stringstream
提供了類似 printf
的格式化輸出功能。可以使用占位符 {}
來指定輸出位置,并通過 <<
操作符傳遞要輸出的值。#include <iostream>
#include <sstream>
#include <string>
int main() {
int age = 25;
std::stringstream ss;
ss << "I am " << age << " years old.";
std::string str = ss.str();
std::cout << str << std::endl;
return 0;
}
錯誤處理:
stringstream
進行類型轉換或讀取操作時,可能會遇到錯誤情況。可以使用 fail()
和 eof()
方法來檢查操作是否成功。#include <iostream>
#include <sstream>
#include <string>
int main() {
int num;
std::stringstream ss("123abc");
ss >> num;
if (ss.fail()) {
std::cout << "Conversion failed." << std::endl;
} else {
std::cout << "Number: " << num << std::endl;
}
return 0;
}
這些技巧可以幫助你更有效地使用 stringstream
進行字符串和類型之間的轉換以及相關的操作。