2

您好,我正在尝试学习 python,在 C++ 中从标准输入读取字符串,我只是这样做

string str;
while (cin>>str)
    do_something(str)

但在python中,我必须使用

line = raw_input()

然后

x = line.split()

然后我必须遍历列表 x 以访问每个 str 到do_something(str)

这似乎有很多代码只是为了让每个字符串用空格或空格分隔,所以我的问题是,有没有更简单的方法?

4

3 回答 3

6

Python 并没有为您提供这种特殊形式的输入,但是为它制作一个小生成器当然是微不足道的:

def fromcin(prompt=None):
  while True:
    try: line = raw_input(prompt)
    except EOFError: break
    for w in line.split(): yield w

然后,在您的应用程序代码中,使用for语句循环(通常是在应用程序代码级别循环的最佳方式):

for w in fromcin():
  dosomething(w)
于 2010-08-12T02:06:51.620 回答
0

没有真正“更简单”的方法,因为 Python 没有像 C++ 那样内置的格式化字符串函数iostream

也就是说,您可以通过组合操作来缩短代码:

for str in raw_input().split():
   do_something(str)
于 2010-08-12T02:04:48.740 回答
0
map(do_something, line.split())
于 2010-08-12T02:05:13.283 回答