c++中如何用string實現CString格式化的功能
阿新 • • 發佈:2019-01-06
內容目錄:
也就是實現類似下面的功能:
CString str;
double d = 10.24;
str.Format(
"d=%.2f"
,10.24);
其實用c++標準庫來實現也比較簡單,程式碼如下:
#include <sstream>
using
namespace
std;
..
ostringstream buf;
double
d = 10.24;
buf<<
"d="
<<d<<endl;
則buf.str()得到的就是一個內容為
"d=10.24"
的
string
型別的字串。
字串流處理:
通過定義ostringstream和istringstream變數實現,<sstream>標頭檔案中
例如:
string input("hello,this is a test");
istringstream is(input);
string s1,s2,s3,s4;
is>>s1>>s2>>s3>>s4;//s1="hello,this",s2="is",s3="a",s4="test"
ostringstream os;
os<<s1<<s2<<s3<<s4;
cout<<os.str();
轉自:
C++引入了ostringstream、istringstream
istringstream類用於執行C++風格的串流的輸入操作。stringstream類同時可以支援C++風格的串流的輸入輸出操作。strstream類同時可以支援C風格的串流的輸入輸出操作。
istringstream類是從istream(輸入流類)和stringstreambase(c++字串流基類)派生而來,ostringstream是從ostream(輸出流類)和stringstreambase(c++字串流基類)派生而來,stringstream則是從iostream(輸入輸出流類 )和和stringstreambase(c++字串流基類)派生而來。
#include <sstream>
#include <string>
usingnamespace std;
void test()
{
{
//istringstream iss;
//iss.str("#123 1.23 aaa ,zzz kk,k oo.jjj");
istringstream iss("#123 1.23 aaa ,zzz kk,k oo.jjj");
cout << iss.str() << endl;
char ch;
iss >> ch;
cout << ch << endl;
int i;
iss >> i;
cout << i << endl;
float f;
iss >> f;
cout << f << endl;
char buf[1024];
iss >> buf;
cout << buf << endl;
iss.ignore(100, ',');
iss >> buf;
cout << buf << endl;
}
}
int main(int argc, char* argv[])
{
test();
return0;
}
上例中,構造字串流的時候,空格會成為字串引數的內部分界,例子中對a,b物件的輸入"賦值"操作證明了這一點,字串的空格成為了整型資料與浮點型資料的分解點,利用分界獲取的方法我們事實上完成了字串到整型物件與浮點型物件的拆分轉換過程。
str()成員函式的使用可以讓istringstream物件返回一個string字串(例如本例中的輸出操作(cout<<istr.str();)。
http://blog.sina.com.cn/s/blog_4564be4d0100ljpz.html
參考:
c++ string 格式化 baidu