[英]To remove double quotes from vector<string> c++ 98
我正在嘗試從我的向量字符串值中刪除雙引號字符。
例如:如果我的向量字符串有值 (50,40,"50GB","40GB",60)。 我正在嘗試通過刪除雙引號(“”)來優化向量。 所以我的最終向量(50,40,50GB,40GB,60)。
下面是我試圖讓它工作的一段代碼,我得到編譯問題說......請幫助我解決這個問題並達到預期的結果。
In function ‘void removeCharsFromVectorString(std::vector<std::basic_string<char> >&)’:
strErase.cpp:28:27: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
if(str[p][i] == " \" ")
Code:
#include <iostream>
#include <string.h>
#include <algorithm>
#include <vector>
using namespace std;
void removeCharsFromVectorString( vector<string> &str)
{
for(int p = 0; p < str.size(); p++)
{
for ( unsigned int i = 0; i < str[p].length() ; ++i )
{
if(str[p][i] == " \" ")
{
str[p].erase(i, 1);
i--;
}
//str.erase( remove(str.begin(), str.end(), charsToRemove[i]), str.end() );
}
}
for(int p = 0; p < str.size(); p++)
{
cout<<str[p]<<endl;
}
}
int main()
{
vector<string> str;
str.push_back("50");
str.push_back("40");
str.push_back("\"50GB\"");
str.push_back("\"40GB\"");
str.push_back("60");
removeCharsFromVectorString(str);
return 0;
}
str[p][i] 是 char 類型,因此需要將其與 char 進行比較。 將雙引號放在兩個單引號中應該可以解決問題:
if(str[p][i] == '"')
{
str[p].erase(i, 1);
i--;
}
完整代碼:
#include <iostream>
#include <string.h>
#include <algorithm>
#include <vector>
using namespace std;
void removeCharsFromVectorString( vector<string> &str)
{
for(int p = 0; p < str.size(); p++)
{
for ( unsigned int i = 0; i < str[p].length() ; ++i )
{
if(str[p][i] == '"')
{
str[p].erase(i, 1);
i--;
}
//str.erase( remove(str.begin(), str.end(), charsToRemove[i]), str.end() );
}
}
for(int p = 0; p < str.size(); p++)
{
cout<<str[p]<<endl;
}
}
int main()
{
vector<string> str;
str.push_back("50");
str.push_back("40");
str.push_back("\"50GB\"");
str.push_back("\"40GB\"");
str.push_back("60");
removeCharsFromVectorString(str);
return 0;
}
Output:
50 40 50GB 40GB 60
str[p]
給你一個string&
所以一個對字符串的引用。 然后你做另一個[]
,所以str[p][i]
給你一個char&
。 然后,您嘗試將其與" \" "
進行比較,后者是 c 樣式的字符串(即char const *
)。這不起作用。
我認為您正在嘗試將其與'"'
進行比較,因此 char 表示雙引號。這樣您可以將蘋果與蘋果進行比較。
除了:
考慮一下如果你在字符串中加入""
會發生什么。 擦除第一個,然后在幾秒鍾后繼續迭代,因為你的字符串現在更短了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.