最近做了個題目,遇到了要將字符串前後空格消除的細節問題。在Java中好像有一個字符串函數為trim()可以消除字符串後的空格。對於c++,查了一下,可以引用一個c++標准庫Boost,可以輕松解決,但要下載,設置環境變量,因而沒去弄。當然還可以用正則表達式進行匹配,但似乎都大材小用。不如就用substr()函數,而且string有find_last_not_of,find_first_not_of等等屬性,已經夠我們解決問題了。
代碼如下:
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
using namespace std;
//從文件中讀取每一行,然後消除前後空格,使其連成一個新的字符串。
int main()
{
string newstring = "";
vector<string> str;
ifstream fin("a.txt");
string line;
while (getline(fin, line))
str.push_back(line);
for (unsigned i = 0; i < str.size(); i++)
{
newstring += str[i].substr(str[i].find_first_not_of(" "),str[i].find_last_not_of(" ")-str[i].find_first_not_of(" ")+1);
}
cout<<newstring<<endl;
return 0;
}