Is std::cout thread safe for single output [duplicate] - c++

This question already has answers here:
Is cout synchronized/thread-safe?
(4 answers)
How to easily make std::cout thread-safe?
(11 answers)
Closed last month.
Suppose there are several threads, each thread invokes
std::cout << 123;
for each statement, it should output 3 characters, '1', '2', and '3'. So does the C++ standard guarantees that the '1' '2' and '3' will not interleave? i.e., the system will not output the following result:
112233
Thanks

Related

Getting two different results whilie printing string::npos without typecasting and with typecasting [duplicate]

This question already has answers here:
Is std::string::npos == -1 always true?
(3 answers)
Why is (18446744073709551615 == -1) true?
(4 answers)
Closed 9 months ago.
Can anyone please help me to solve this doubt?
When I'm executing the below two lines of code, I'm getting two different results. What's the reason?
cout<<endl<<"npos (int): "<<(int)string::npos<<endl;
cout<<endl<<"npos: "<<string::npos<<endl;
OUTPUT:
npos (int): -1
npos: 18446744073709551615

Strange behaviour while adding string to another string in C++ [duplicate]

This question already has answers here:
How can I repeat a string a variable number of times in C++?
(10 answers)
Closed 2 years ago.
one is 2, and ans is "000000".
string ans = "000000";
ans += string("1", one);
cout<<ans<<endl;
The output is:
0000001�
But I want the output:
00000011
What am I doing wrong?
string("1", one) does not do what you think it does. It does not duplicate the "1" string one number of times. It instead copies the 1st one number of chars from "1", which in this case is the '1' character and the '\0' null-terminator that follows it, which is where the � is coming from in the output. That is not what you want.
Use string(one, '1') instead. That will duplicate the '1' character one number of times, like you want, eg:
ans = "000000";
ans += string(one, '1');
cout << ans << endl;
Just use c++ strings and use + operator to catenate strings.

c++ loop at exact time intervals [duplicate]

This question already has answers here:
How to make a function execute at the desired periods using c++ 11
(2 answers)
How to create timer events using C++ 11?
(6 answers)
Closed 3 years ago.
I've got the similar problem as python - loop at exact time intervals - the only difference is that I want to use C++.
So: how is it possible in C++ to make a loop in which every iteration would take a set amount of time, independently of the time of executing code in a loop?
// Example:
for (int i = 0; i < 100; i++)
{
cout << "foo" << endl; // prints foo every, let's say, 1s
bar(); // may take, let's say 1ms or 325ms (of course less than 1s)
}

Efficient extraction of several numbers from a character string in R [duplicate]

This question already has answers here:
R: convert list of numbers from character to numeric
(3 answers)
Closed 7 years ago.
Suppose I have the character string
x <- " 1.1325 -0.9022 -0.1832 -0.5479 0.1236 -0.6556 -1.0599 -0.8881 -0.2136"
and I want to extract the floats to end up with this vector as output:
c(1.1325, -0.9022, -0.1832, -0.5479, 0.1236, -0.6556, -1.0599, -0.8881, -0.2136)
What I managed to achieve is:
na.omit(as.numeric(strsplit(samp, split = " ")[[1]]))
My question: Is there a more efficient way?
We can use scan
scan(text=x, what=numeric(), quiet=TRUE)
#[1] 1.1325 -0.9022 -0.1832 -0.5479 0.1236 -0.6556 -1.0599 -0.8881 -0.2136

Difference between "endl" and "\n" [duplicate]

This question already has answers here:
Closed 12 years ago.
Possible Duplicate:
C++: “std::endl” vs “\n”
I'm wondering if there is any significant difference between these two ways to print newline :
cout << endl; //approach1
cout << "\n"; //approach2
Is there any practical difference?
Yes, they're different.
"\n" is just a string of length 1 that gets appended to stdout.
std::endl, instead, is an object that will cause to append the newline character ("\n") AND to flush stdout buffer. For this reason it will take more processing.