C++ 识别整数并用X替换数字

C++ 识别整数并用X替换数字,c++,c++11,C++,C++11,因此,我正在开发一个程序,用x替换输入cin的每个数字,但如果是像john17这样的数字,则不要(因此,基本上,如果单词是整数,则替换数字,否则,保持单词不变)。我正在努力寻找解决办法。如何将输入行中的单词分解,并测试它是否为整数 所以要补充一些说明…这是一行文字,比如:“我的用户ID是john17,我的4位pin是1234,这是秘密的”,所以我想保留john17,但用x替换4,用x替换1234 #include <iostream> #include <string>

因此,我正在开发一个程序,用x替换输入cin的每个数字,但如果是像john17这样的数字,则不要(因此,基本上,如果单词是整数,则替换数字,否则,保持单词不变)。我正在努力寻找解决办法。如何将输入行中的单词分解,并测试它是否为整数


所以要补充一些说明…这是一行文字,比如:“我的用户ID是john17,我的4位pin是1234,这是秘密的”,所以我想保留john17,但用x替换4,用x替换1234

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

// Our variables
string str;
string result;

//Function Prototypes
void replace_num_with_x(string str);

int main() {

    cout<<"Please enter a line of text:";
    getline(cin, str);
    replace_num_with_x(str);
    cout<<result;

}

//Function Definition
void replace_num_with_x(string str) {
    stringstream str_strm;
    str_strm << str; //Convert string to stringstream

    for(int i = 0; i <= str.length() ; i++) {
        if((char)str[i] >=48 && (char)str[i] <= 57) {
            result +='x';
        }
        else {
            result +=str[i];
        }
    }
}
#包括
#包括
#包括
使用名称空间std;
//我们的变量
字符串str;
字符串结果;
//功能原型
void将_num_替换为_x(字符串str);
int main(){

cout你离得不远。
将_num_替换为_x()
正在创建一个
stringstream
,它在任何地方都没有使用。更改循环以从该流中读取单个单词,例如:

#包括
#包括
#包括
使用名称空间std;
字符串将_num_替换为_x(常量字符串和str);
int main(){
cout(单词){
bool all_digits=真;
字符串::size\u type word\u size=word.size();
对于(字符串::大小\类型i=0;i'9'){
所有数字=假;
打破
}
}
如果(!result.empty()){
结果+='';
}
如果(所有数字){
结果。追加(单词_大小,'x');
}否则{
结果+=单词;
}
}
返回结果;
}

或者:

#包括
#包括
#包括
#包括


更新:如果不允许您使用
istringstream
,则您可以执行类似的操作:

#包括
#包括
使用名称空间std;
字符串将_num_替换为_x(常量字符串和str);
int main(){

当然,在你真正尝试替换数字之前,你需要检查你是否要替换单词中的任何数字。要做到这一点,你可以使用for循环来检查
str
中的所有数字是否都是数字;如果是,那么你就知道
str
代表一个整数,你可以相应地更改数字。因此,要添加som澄清…这是一行文字,如:“我的用户ID是john17,我的4位pin是1234,这是秘密的”,所以我想保留john17,但用x替换4,用所有x'sC++都有字符,所以写
(char)str[I]>=48&(char)str[I]='0'&&str[I]…或
std::isdigit(str[I])
1.阅读cin中的一个单词。2.检查该单词中的每个字母。3.如果不是数字,返回原始单词。4.否则返回一个与原始单词长度相同的新词,并填充X。高智商回复。我们还没有讨论stringstream…所以我想知道是否应该使用string.substr(开始,结束)--然后在这里调整开始点和结束点来解析它。我可以使用搜索来查找单词之间的空格。但是谢谢你!“我们还没有讨论stringstream”-那么你为什么要在代码中声明一个呢?因为我用谷歌搜索了它,但不知道如何使用它…我已经更新了我的答案,以包含一个
substr()
示例。