【发布时间】:2017-04-06 06:02:23
【问题描述】:
我有一个从键盘读取的 C 程序,如下所示:
scanf("%*[ \t\n]\"%[^A-Za-z]%[^\"]\"", ps1, ps2);
为了更好地理解这条指令的作用,让我们将格式字符串拆分如下:
%*[ \t\n]\" => 读取所有空格、制表符和换行符 ([ \t\n]) 但不将它们存储在任何变量中(因此是 '*'),并且会一直读取直到遇到双引号 (\" ),但不输入双引号。
一旦scanf() 找到双引号,就将所有不是字母的字符读入 ps1。这是通过...完成的。
%[^A-Za-z] => 输入任何不是大写字母“A”到“Z”和小写字母“a”到“z”的内容。
%[^\"]\" => 读取所有剩余字符,但不包括双引号到 ps2 ([^\"]) 并且字符串必须以双引号 (\") 结尾,但是不输入双引号.
谁能告诉我如何在 C++ 中做同样的事情
谢谢
【问题讨论】:
-
我说的好像有些人不太清楚! 'cin存在于C++中来代替C的scanf,否则我们不需要'cin'、'cout'以及C++引入的所有特性。
-
@AndrewHenle,所以你的意思是我不能根据一些限制从控制台读取!是你说的吗?对不起,我不相信。
-
@0x5453 我不想在 C++ 中引用 scanf。我想在没有 cstdio 的情况下做同样的事情
-
std::cin更多地用于直接阅读单词。对于更高级的东西,我们std::regex -
@appleapple,我在一本书上读到了