我 尝试 在 c + + 中 以 向量 的 形式 接受 用户 输入 , 因为 向量 是 一 个 动态 数据 结构 , 我 希望 它 在 用户 想要 的 时间 内 接受 输入 , 当 用户 按 回车 键 时 , 它 应该 停止 接受 输入( 就 像 一 个 字符 串 ) 唯一 的 区别 是 我 想 在 一 个 整数 向量 中 做 它 ,但 我 不能 这样 做 , 让 我 知道 是否 有 可能 或 不 采取 用户 输入 的 向量 一样 , 我 描述 的 方式 。
我 已经 在 网上 搜索 了 各种 方法 , 但 我 的 代码 仍然 没有 运行 我 想要 的 方式 , 我 已经 尝试 使用 EOF
符号 打破 输入 的 循环 , 但 它 没有 停止 输入 的 循环 。 我 已经 尝试 使用 cin.ignore()
函数 , 但 它 也 需要 空格 键 计数 我 只 想 停止 输入 时 按 下 回车 键 。 下面 是 我 最近 的 代码 :
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int> v;
char c;
for(int i=0;;i++){
cin>>c;
if(c=='\n'){
break;
}
int x = c - '0';// typecasting char into integer.
v.push_back(x);
}
cout<<v.size()<<endl;// just to check if it is done taking input and what is the size of vector now.
}
中 的 每 一 个
4条答案
按热度按时间vwhgwdsa1#
你可以使用
std::getline()
得到整行,然后使用std::istreamstream
把整数转化为向量:rkttyhzu2#
把整行读成字符串,然后构建每个数字。类似这样:
5f0d552i3#
你只需要将Vector元素作为一个字符串输入,然后使用Stringstream函数按照向量索引的升序分别分配元素。
2uluyalo4#
1.当 你 从 std : : cin 读取 时 , 它 会 从 控制 台 接收 一 整 行 , 你 的 cin 〉 〉 c 会 检索 该行 的 第 一 个 字符 , 并 将 该 字符 放入 变量 c 中 。
1.这 意味 着 if ( c = ='\ n') 几乎 毫无 意义 , 因为 该行 将 被 使用 , 并且 您 不会 看到 显 式 的 ' \ n ' 作为 第 一 个 字符 ...EVER 。
1.我 * 认为 * 你 想 做 的 事情 像 下面 . . .
中 的 每 一 个
请 注意 , 在 macOS 和 一些 Linux 变体 上 , getch/getche 没有 定义 , 您 需要 使用 termios 或 ncurses 函数 来 代替 。