www.digitalmars.com Home | Search | C & C++ | D | DMDScript | News Groups | index | prev | next
Archives

D Programming
D
D.gnu
digitalmars.D
digitalmars.D.bugs
digitalmars.D.dtl
digitalmars.D.dwt
digitalmars.D.announce
digitalmars.D.learn
digitalmars.D.debugger

C/C++ Programming
c++
c++.announce
c++.atl
c++.beta
c++.chat
c++.command-line
c++.dos
c++.dos.16-bits
c++.dos.32-bits
c++.idde
c++.mfc
c++.rtl
c++.stl
c++.stl.hp
c++.stl.port
c++.stl.sgi
c++.stlsoft
c++.windows
c++.windows.16-bits
c++.windows.32-bits
c++.wxwindows

digitalmars.empire
digitalmars.DMDScript

c++ - cin with a string

↑ ↓ ← st <st_member pathlink.com> writes:
This compiles but does not execute:
//(code has been shortened on purpose)

#include <iostream.h>
#include <string>

string something;

int main()
{

cout << "Enter your name: ";
cin >> something;

}

This compiles and executes properly:

#include <iostream.h>
#include <string>

char something[40];

int main()
{

cout << "Enter your name: ";
cin >> something;

}

Why won't a string work with cin?
Mar 16 2003
↑ ↓ Richard Grant <fractal clark.net> writes:
In article <b539un$1097$1 digitaldaemon.com>, st says...
This compiles but does not execute:
//(code has been shortened on purpose)

My guess is that you are using the older stream library since using stlport and this works as expected: #include <iostream> #include <string> int main() { std::string something; std::cin >> something; } But the real answer to your question is that it does not work because you do not have an extraction operator defined for istream and "string" in your environment. Richard
Mar 17 2003
↑ ↓ → "Jim Jennings" <jwjenn mindspring.com> writes:
"Richard Grant" <fractal clark.net> wrote in message
news:b54gjm$1qvp$1 digitaldaemon.com...
 In article <b539un$1097$1 digitaldaemon.com>, st says...
This compiles but does not execute:
//(code has been shortened on purpose)

My guess is that you are using the older stream library since using

 this works as expected:

 #include <iostream>
 #include <string>

 int main() {
 std::string something;
 std::cin >> something;
 }

 But the real answer to your question is that it does not work because you

 have an extraction operator defined for istream and "string" in your
 environment.

 Richard

If you want to enter more than one name, e.g., Joe Fauntleroy Blow, try: std::getline(std::cin, something);
Mar 17 2003