我必须创建一个带有字符串的Convert构造函数。该字符串将整数保存为字符串,数字由字符|分隔。例如,如果参数是以下字符串“12 | 34 | 56 | 78”,则生成的对象将具有以下值:12,34,56和78。
for(int i=0; i<8; i++)
{
if(s[i]!='|')
cout<<s[i]<<s[i+1]<<", ";
}
这是我到目前为止所做的,但我得到的输出是“12,| 2,34,| 3 ..”我怎么做它“12,34,56,78”?
答案 0 :(得分:2)
按原样,即使|
条件为if
,您也会打印true
字符。使用您的方法将代码修改为:
std::string s = "12|34|56|78";
for (std::size_t i = 0; i < s.size(); i++) {
if (s[i] == '|') {
std::cout << ", ";
}
else {
std::cout << s[i];
}
}
如果您想修改字符串本身,请合并std::string::find和std::string::replace函数,如Shreevardhan's answer所示。
答案 1 :(得分:2)
只需查找并替换所有
即可npm install -g npm@latest
或者,如果你有一个C风格的字符串,只想要所需的输出
std::string s("12|34|56|78");
for (auto f = s.find('|'); f != string::npos; f = s.find('|')) {
s.replace(f, 1, ", ");
}
std::cout << s << std::endl;
答案 2 :(得分:1)
如果您想将带有'|'的字符串更改为带有','的字符串,您可以尝试使用标准中的函数replace。
std::replace( s.begin(), s.end(), '|', ',');
答案 3 :(得分:0)
您需要创建的是字符串拆分方法:
//Split string -- reusable
vector<string> splitString(string str, string delimiter)
{
vector<string>v;
string token;
size_t pos = 0;
while((pos = str.find(delimiter)) != string::npos)
{
token = str.substr(0, pos);
v.push_back(token);
str.erase(0, str.find(delimiter) + delimiter.length());
}
v.push_back(str);
return v;
}
所以使用'|'作为分隔符,你会得到以下结果:)!
答案 4 :(得分:0)
如果你只是使用STL,你就不会使用循环。
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string s = “12|34|56|78”;
std::replace(s.begin(),s.end(),'|',',');
std::cout << s << '\n';
return 0;
}
如果你有时间,请听Stephan T. Lavavej的STL讲座。他们很有趣! Link
答案 5 :(得分:0)
如果你只想要一个带有你指定输出的新字符串,你可以像替换分隔符一样简单。(你也可以复制新的字符串并修改)
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str="12|34|5|100";
for(int i=0;i<str.length();i++)
{
if(str[i]=='|')
str[i]=',';
}
cout<<str<<endl;
return 0;
}
答案 6 :(得分:-1)
看看strtok。这是一个标准的库函数。
引用来源:
char * strtok ( char * str, const char * delimiters );
对此函数的一系列调用将str拆分为标记,标记是由分隔符中的任何字符分隔的连续字符序列。
/* strtok example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}