c-string用户输入为空时如何发送错误消息?
Posted
技术标签:
【中文标题】c-string用户输入为空时如何发送错误消息?【英文标题】:How to send an error message when c-string user input empty? 【发布时间】:2018-05-14 07:30:15 【问题描述】:所以我现在正在尝试制作一个程序。 我尝试使用 c 字符串来获取名称并使用菜单 #2 输出用户输入 另外,当用户输入空白时,我想发送一条错误消息并要求用户再次输入名称。
真正的问题是,我知道当我有一个空字符串时如何发送错误消息,但当我有一个空 c- 字符串时却不知道。
这是我的程序。
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <cstring>
using namespace std;
void inputPika(char[]);
void display_menu();
void displayPika(char[]);
void display_menu()
//Display menu for user selection
cout << "The Name game: " << endl;
cout << "1. Pika Name " << endl;
cout << "2. Display Pika Name " << endl;
void inputPika(char a[])
const int SIZE = 40;
cin.getline(a, SIZE);
void displayPika(char a[])
cout << a << endl;
int main()
int pick = 0;
const int SIZE = 40;
char name[SIZE];
cin.ignore();
while (true)
display_menu();
cin >> pick;
cin.ignore();
switch (pick)
case 1:
cout << "1. Input Name: ";
inputPika(name);
break;
case 2:
cout << "2. Display Name: ";
displayPika(name);
break;
(遗憾的是,我的其他函数需要 c-string,所以我无法将所有内容都更改为字符串) 还有一个问题。
当我运行我的程序时,程序没有自动运行,我必须按回车才能看到菜单选项。我不确定为什么我的程序会这样做。
【问题讨论】:
要检查 C 字符串是否为空,您只需strlen(str) == 0
。对于第二个问题,您应该检查 cin.ignore()
呼叫...
不是真的,我会把它放在inputPika
但请注意,对于 C 字符串,您可以考虑使用 C I/O。 getline()
(例如,如果可用)。在这种情况下,您可以简单地检查它的返回值。
哦,好的,谢谢 :D 我想我解决了第二个问题。我仍在处理第一个问题,但你帮了我很多。 :D
【参考方案1】:
为了解决“自动运行”,您应该删除以下内容:
cin.ignore();
在您的情况下,空“名称”将反映在缓冲区中的'\0'
(空终止符)字符中,因此您可以在从inputPika()
函数返回后检查name[0] == '\0'
。
【讨论】:
以上是关于c-string用户输入为空时如何发送错误消息?的主要内容,如果未能解决你的问题,请参考以下文章
如何确保MFMailComposeViewController在body不为空时不发送电子邮件?