比较字符串不能与cin一起使用

时间:2015-07-21 12:19:20

标签: c++ string

我正在研究一个微不足道的问题,但我无法弄明白。该程序应该在" simon说"之后推出该部分。如果str1的开头是"西蒙说"。如果我像下面的代码一样运行它,它可以工作,但如果我自己输入字符串cin >> str1;,它不会。有人给我一个提示吗? (是的,这是一个kattis问题)

int main()
{
 string str1("simon says write a program");
 //cin >> str1;
 string str2 ("simon says");
 if (str1.compare(0,10,str2,0,10) == 0){
  cout << str1.substr(11,str1.size());
 }
 return 0;
}

2 个答案:

答案 0 :(得分:4)

这是因为std :: cin获得了以空格分隔的字符串。如果您尝试使用

从标准输入中读取字符串
import pygame, sys
from pygame.locals import *

pygame.init()

#Create a displace surface object
#Below line will let you toggle from maximize to the initial size
DISPLAYSURF = pygame.display.set_mode((400, 300), RESIZABLE)

mainLoop = True

while mainLoop:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            mainLoop = False
    pygame.display.update()

pygame.quit()

你将进入“西蒙说”,“西蒙”将登陆str1,“说”将进入str2。要阅读整行,您应该使用

std::cin << str1;
// something here
std::cin << str2;

答案 1 :(得分:1)

使用scope :with_account, -> (user_id) { where(account_id: user_id) } scope :active, -> { where(status: ACTIVE) } scope :all_except, -> (user_id) { where.not(id: user_id) } User.active.with_account(current_user.account_id) .all_except(current_user.account_id) 时,如果您为“Simon write something”这句话打印str1,您会看到cin >> str1的值为“Simon”。

要不将句子剪切到第一个空格,请将str1替换为cin >> str1