gpt4 book ai didi

c++ - 操作字符串 C++

转载 作者:行者123 更新时间:2023-11-30 03:47:39 27 4
gpt4 key购买 nike

我正在为类做这项作业,但遇到了一个问题。

该程序的目标是让用户

  • 输入他们的名字,然后输入姓氏。
  • 然后程序会要求输入昵称。
  • 最后程序会输出你的

    1. 名字
    2. 昵称在引号内全部大写
    3. 姓氏

可以找到更详细的说明版本here

所以我的问题在于我将如何操作一个字符串来将昵称放在第一个和最后一个之间

我正在使用 cin.getline() 在开头输入名字和姓氏。 我似乎无法在字符串中找到姓氏。有没有办法在数组中的某个位置之后将字符串/字符 [] 读入另一个字符串。

就像某些 c++ 本地库中的函数(伪代码)

readFromPoint(array, otherArray, beginPoint, stopPoint);

或者我只需要构建自己的循环。

我想将我的名字和姓氏输入到一个字符串中。然后将它们放入两个单独的字符串中。然后我将 (first, nickname, last) 放入第一个和原始字符串中。

我知道如果我只使用两个 cin 语句,它可以让我省去很多心痛。 (我相信我听说过其他人称之为危险)

这是我的代码:

#include <iostream>
#include <cstring>
using namespace std;

char Name[46], // the full names leangth - 2
firstName[16],
lastName[16],
nickName[16];
int numOSpaces;

//void rearrangeName();
int FindSpace(string, int);
int FindNull(string);
int main(){

cout << "Pleast enter your first then last name...\n";
cin.getline(Name, 30);
int ender = FindSpace(Name, strlen(Name));

// here we check if you entered the right amount of spaces
while (numOSpaces > 1 || numOSpaces < 1){
if (numOSpaces > 1)
cout << "There are too many spaces only put one space:\n";
if (numOSpaces < 1)
cout << "Please separate your first and last name:\n";
cin.getline(Name, 30);
ender = FindSpace(Name, strlen(Name));
}

cout << "Hello " << Name <<".\n";

cout << "\n\nEnter your nickname...\n";\

cin.getline(nickName, 30);
cout << "Whats up " <<nickName << "!" << endl << endl;

// Now we separate the first name and the last name
//rearrangeName();
}

// used to tell where user stopped inputting into the string
int FindNull(string find){
int index = 0;
do{
index++;
}while (isprint(find[index])); // this stops at the null terminator
// }while (find[index] != '\0'); // as will this
return index;
}

// here we find the first space
int FindSpace(string mystring, int size){
int Space;
int spaceCount = 0;
for (int index; index < size; index++){
if (isspace(mystring[index])){
Space = index;
spaceCount++;
}
}
numOSpaces = spaceCount;
return Space;
}

void findName(string fullName, string otherName){

}

当然,如果我想打开它,我不能使用任何外部库。只有那些原生于 C++ 的。

最佳答案

看看这个程序,它使用 std::string 可以很好地完成你的工作,因为它有一些奇特的功能,比如 findinsert 等:-

#include <iostream>
#include <string>
using namespace std;
int main()
{
string name, nickname;
getline(cin,name);
getline(cin,nickname);
nickname.insert(0," "); // insert a space before nickname
int pos = name.find(" "); // find where space is becuase space separates first & last name
name.insert(pos, nickname); // insert nickname at the space, it doesn't trouble because we have a space before nickname
cout << name;
return 0;
}

输出将是:-

Ankit Acharya
Programmer
Ankit Programmer Acharya

希望这能很好地解决您的问题!!

关于c++ - 操作字符串 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596921/

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