gpt4 book ai didi

c++ - 我如何取除姓氏以外的姓名的所有部分的首字母?

转载 作者:行者123 更新时间:2023-11-28 06:32:23 24 4
gpt4 key购买 nike

您好,我正在尝试编写一个 C++ 程序,用户将在其中输入一个姓名,例如:Tahmid Alam Khan Rifat,计算机将打印姓名的格式化版本,在本例中为:T. A. K. Rifat 先生.我已经包含了下面的代码。您将能够看到我已经很接近了,但仍然不是我想要的。请帮忙。

#include<iostream>

#include<string>

using namespace std;

class myclass{

private:

string name,temp;

string p;

int i,j,sp;

public:
void work(){

cout << "Enter the name of the male student: ";
getline(cin,name);
cout << endl;
cout << "The original name is: ";
cout << name;
cout << endl << endl;

cout << "The formatted name is: " << "Mr." << name[0] << ".";
for(i=0;i<name.size();i++){
if(name[i]==' '){
sp=i;
for(j=sp+1;j<=sp+1;j++){
temp=name[j];
cout << temp << ".";
}
}
}
for(i=sp+2;i<name.size();i++){
cout << name[i];
}
cout << endl;

}
};

int main(){
myclass c;
c.work();
}

最佳答案

我想解决这个问题最简单的方法是标记你的字符串,打印它的第一个字符,除了最后一个,你打印它的全尺寸。

要标记化,您可以这样做:

std::vector<std::string> tokenize(std::istringstream &str)
{
std::vector<std::string> tokens;
while ( !str.eof() ) {
std::string tmp;
str >> tmp;
tokens.push_back(tmp);
}
return tokens;
}

现在您可以轻松地横向标记:

int main()
{
std::string name;

cout << "Enter the name of the male student: ";
getline(cin,name);
cout << endl;

cout << "The original name is: ";
cout << name;
cout << endl << endl;

std::istringstream str(name);

std::vector<std::string> tokens = tokenize(str);

for ( int i = 0 ; i < tokens.size() - 1; ++i)
std::cout << tokens[i][0] << ". ";

cout << tokens[tokens.size() - 1] << endl;
}

关于c++ - 我如何取除姓氏以外的姓名的所有部分的首字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27317506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com